package com.huawei.creat;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;

/**
 * @description:
 * @author: lhh
 * @time: 2022/6/7
 */
//创建校验信息类
public class CheckInfo {
        public static HashSet<User> USER_DATA = new HashSet<User>(); // 用户数据
        public CheckInfo(HashSet<User> USER_DATA) {
            this.USER_DATA = USER_DATA;
        }
        // 校验用户信息,返回登录状态信息
        public String checkAction(String userName, String password,
                                  String rePassword,String birthday, String phone, String email) {
            StringBuilder result = new StringBuilder();
            // 1代表成功 2代表失败
            int state = 1;
            //当主程序调用该类中的checkAction()方法后，以下代码会校验用户填写的信息，所有校验通过后，将信息创建成User对象
            // 密码判断
            if (!password.equals(rePassword)) {// 判断密码和重复密码是否相同
                result.append("两次输入密码不一致!\r\n");
                state = 2;
            }
            // 生日判断
            if (birthday.length() != 10) {// 字符串长度不为10，则认为格式错误
                result.append("生日格式不正确!\r\n");
                state = 2;
            } else {
                for (int i = 0; i < birthday.length(); i++) {
                    Character thisChar = birthday.charAt(i);
                    if (i == 4 || i == 7) {
                        if (!(thisChar == '-')) {// 验证第4位和第7位是否是符号“-”
                            result.append("生日格式不正确!\r\n");
                            state = 2;
                        }
                    } else {// 验证除了第4位和第7位的字符是否是0~9的数字
                        if (!(Character.isDigit(thisChar))) {
                            result.append("生日格式不正确!\r\n");
                            state = 2;
                        }
                    }
                }
            }
            // 手机号判断
            // 判断手机号长度不等于11位则认为此手机号无效
            if (phone.length() != 11) {
                result.append("手机号码不正确!\r\n");
                state = 2;
                // 默认有效手机号为13、15、17和18开头的手机号
            } else if (!(phone.startsWith("13") || phone.startsWith("15")
                    || phone.startsWith("17") || phone.startsWith("18"))){
                result.append("手机号码不正确!\r\n");
                state = 2;
            }
            // 邮箱判断
            // 判断邮箱地址，默认不带@符号的邮箱为无效邮箱
            if (!email.contains("@")) {
                result.append("邮箱不正确!\r\n");
                state = 2;
            }
            // 如果以上信息校验无误，则将新用户加入到集合
            if (state == 1) {
                // 格式化日期返回Date对象
                //定义日期格式
                DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                Date dateBirthday = null;
                try {
                    // 将生日格式化成日期格式
                    dateBirthday = format.parse(birthday);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                User newUser = new User(userName,rePassword,dateBirthday,phone,email);
                //将用户添加到列表中，同时可根据HashSet判断出用户名有没有重复
                //判断用户名的哈希值是否相等。相等则添加失败，反之则成功，返回结果。
                if (!USER_DATA.add(newUser)) {
                    result.append("用户重复!");
                    state = 2;
                }
                if (state == 1) {
                    result.append("注册成功!");
                }
            }
            return result.toString();
        }
    }

